home *** CD-ROM | disk | FTP | other *** search
/ Internet Surfer 2.0 / Internet Surfer 2.0 (Wayzata Technology) (1996).iso / pc / text / mac / faqs.357 < prev    next >
Text File  |  1996-02-12  |  29KB  |  597 lines

  1. Frequently Asked Questions (FAQS);faqs.357
  2.  
  3.  
  4.  
  5. The mailing list info-dylan@cambridge.apple.com is for any and all
  6. discussions of Dylan, including language design issues, implementation
  7. issues, marketing issues, syntax issues, etc. The mailing list
  8. announce-dylan@cambridge.apple.com is for major announcements about
  9. Dylan, such as the availability of new implementations, new versions
  10. of the manual, etc.  This mailing list should be *much* lower volume
  11. than info-dylan.  Everything sent to this list is also sent to
  12. info-dylan.  The mailing list dylan-builders@cambridge.apple.com is
  13. for people who are working on Dylan implementations. (To be added to
  14. dylan-builders, send a note describing your implementation plans to
  15. dylan-builders-request.) Apple hopes to set up a comp.lang.dylan
  16. newsgroup to be gatewayed to the info-dylan mailing list.
  17.  
  18. Send mail to the -request version of the list to be added to it.
  19.  
  20. Apple hasn't announced plans to release Dylan as a product.
  21.  
  22. The directory cambridge.apple.com:pub/dylan contains some documents
  23. pertaining to Dylan, including a FAQ list.
  24.  
  25. ========
  26.  
  27. Thomas is a compiler for a language that is compatible with the
  28. language described in the book "Dylan(TM) an object-oriented dynamic
  29. language" by Apple Computer Eastern Research and Technology, April
  30. 1992. Thomas was written at Digital Equipment Corporation's Cambridge
  31. Research Laboratory. Thomas is NOT Dylan(TM) and was built with no
  32. direct input, aid, assistance or discussion with Apple.
  33.  
  34. Thomas is available to the public by anonymous ftp at
  35.        crl.dec.com:pub/DEC/Thomas
  36.        gatekeeper.pa.dec.com:pub/DEC/Thomas
  37.        altdorf.ai.mit.edu:archive/Thomas
  38.  
  39. The Thomas system is written in Scheme and runs under MIT's CScheme,
  40. DEC's Scheme->C, and Marc Feeley's Gambit.  It can run on a wide range
  41. of machines including the Macintosh, PC compatibles, Vax, MIPS, Alpha,
  42. and 680x0.  Thomas generates IEEE compatible Scheme code.
  43.  
  44. DEC CRL's goals in building Thomas were to learn about Dylan by
  45. building an implementation, and to build a system they could use to
  46. write small Dylan programs. As such, Thomas has no optimizations of
  47. any kind and does not perform well.
  48.  
  49. The original development team consisted of:
  50.           Matt Birkholz (Birkholz@crl.dec.com)
  51.           Jim Miller (JMiller@crl.dec.com)
  52.           Ron Weiss (RWeiss@crl.dec.com)
  53. In addition, Joel Bartlett (Bartlett@wrl.dec.com), Marc Feeley
  54. (Feeley@iro.umontreal.ca), Guillermo Rozas (Jinx@zurich.ai.mit.edu)
  55. and Ralph Swick (Swick@crl.dec.com) contributed time and energy to the
  56. initial release.
  57.  
  58. ----------------------------------------------------------------
  59. [4-7] What Lisp-related discussion groups and mailing lists exist?
  60.  
  61. Before posting to any discussion group, please read the rest
  62. of this FAQ, to make sure your question isn't already answered.
  63.  
  64. First of all, there are several lisp-related newsgroups:
  65.    comp.lang.lisp          General Lisp-related discussions.
  66.                            See below for archive information.
  67.    comp.lang.clos          Discussion related to CLOS, PCL, and
  68.                            object-oriented programming in Lisp.
  69.                            Gatewayed to commonloops@cis.ohio-state.edu.
  70.                            (or equivalently, comp.lang.clos@cis.ohio-state.edu)
  71.                            See below for info on the newsgroup's archives.
  72.    comp.lang.lisp.mcl      Discussions related to Macintosh
  73.                            Common Lisp. This newsgroup is gatewayed
  74.                            to the info-mcl@cambridge.apple.com
  75.                            mailing list and archived on cambridge.apple.com.
  76.    comp.lang.lisp.franz    Discussion of Franz Lisp, a dialect of Lisp.
  77.                            (Note: *not* Franz Inc's Allegro.)
  78.    comp.lang.lisp.x        Discussion of XLISP, a dialect of Lisp.
  79.    comp.sys.xerox          Discussions related to using Medley (name exists
  80.                            for historical reasons, and is likely to change
  81.                            soon). Gatewayed to the info-1100 mailing list.
  82.    comp.windows.garnet     Garnet, a Lisp-based GUI.
  83.    comp.lang.scheme        General Scheme-related discussion.
  84.                            This newsgroup is gatewayed to the
  85.                            scheme@mc.lcs.mit.edu mailing list.
  86.    comp.lang.scheme.c      Discussion of C-Scheme, a scheme dialect.
  87.                            This newsgroup is gatewayed to the
  88.                            info-cscheme@zurich.ai.mit.edu mailing list.
  89.    comp.ai and subgroups   General AI-related dicusssion.
  90.  
  91.  
  92. The newsgroup comp.lang.lisp is archived on ftp.gmd.de by month, from
  93. 1989 onward. Individual files are in rnews format. (They contain
  94. articles prefixed by a header line "#! rnews <nchars> archive" where
  95. <nchars> is the number of characters in the article following the
  96. header. That format is convenient for various news processing programs
  97. (e.g.  relaynews) and is rather easy to process from a lisp program too.)
  98. A copy of the GMD archives for comp.lang.lisp is available on
  99. cambridge.apple.com:pub/comp.lang.lisp.
  100.  
  101.  
  102. We list several mailing lists below. In general, to be added to
  103. a mailing list, send mail to the "-request" version of the address.
  104. This avoids flooding the mailing list with annoying and trivial
  105. administrative requests.
  106.  
  107. General Lisp Mailing Lists:
  108.  
  109.    common-lisp@ai.sri.com          Technical discussion of Common Lisp.
  110.    cl-utilities@cs.cmu.edu         Low volume mailing list associated with
  111.                                    the Lisp Utilities repository at CMU.
  112.                                    Do *NOT* post directly to this list.
  113.                                    Send mail to
  114.                                       CL-Utilities-Request@cs.cmu.edu
  115.                                    instead and the moderator will either
  116.                                    answer your question or post
  117.                                    the message for you.
  118.    lisp-faq@think.com              A mailing list concerning the contents
  119.                                    of this FAQ posting.
  120.    scheme@mc.lcs.mit.edu           Discussion of Scheme. Gatewayed to
  121.                                    the comp.lang.scheme newsgroup.
  122.    scheme@ai.mit.edu               General discussion about Scheme.
  123.  
  124. Particular Flavors of Lisp:
  125.  
  126.    info-mcl@cambridge.apple.com    Macintosh Common Lisp. Gatewayed
  127.                                    to the comp.lang.lisp.mcl newsgroup.
  128.  
  129.    cmucl-bugs@cs.cmu.edu           CMU Common Lisp bug reports
  130.  
  131.    slug@ai.sri.com                 Symbolics Lisp Users Group
  132.  
  133.    allegro-cl@ucbvax.berkeley.edu  Franz Allegro Common Lisp
  134.  
  135.    kcl@cli.com                     Kyoto Common Lisp
  136.                                    Archived in cli.com:pub/kcl/kcl-mail-archive
  137.    kcl@rascal.ics.utexas.edu       Forwards to kcl@cli.com.
  138.  
  139.    lispworks@harlqn.co.uk          LispWorks
  140.  
  141.    info-ti-explorer@sumex-aim.stanford.edu  TI Explorer Lisp Machine
  142.    bug-ti-explorer@sumex-aim.stanford.edu  TI Explorer Lisp Machine
  143.  
  144.    info-1100@tut.cis.ohio-state.edu  Xerox/Envos Lisp machine environment,
  145.                                    InterLisp-D, and Medley. Gatewayed to
  146.                                    the newsgroup comp.sys.xerox.
  147.  
  148.    info-cscheme@altdorf.ai.mit.edu,
  149.    info-cscheme@zurich.ai.mit.edu  C-Scheme. Gatewayed to the
  150.                                    comp.lang.scheme.c newsgroup.
  151.  
  152.    t-project@cs.yale.edu           T, a dialect of Scheme.
  153.  
  154.    info-clscheme@mc.lcs.mit.edu    PseudoScheme
  155.  
  156.    franz-friends@berkeley.edu      The Franz Lisp Language.
  157.  
  158. Lisp Windowing Systems:
  159.  
  160.    cl-windows@ai.sri.com           Common Lisp Window System Discussions.
  161.    bug-clx@expo.lcs.mit.edu        CLX (Common Lisp X Windows)
  162.    clim@bbn.com                    Common Lisp Interface Manager
  163.    clue-review@dsg.csc.ti.com      Common Lisp User-Interface Environment
  164.    express-windows@cs.cmu.edu      Express Windows
  165.    garnet-users@cs.cmu.edu         Garnet (send mail to garnet@cs.cmu.edu
  166.                                    or garnet-request@cs.cmu.edu to be added)
  167.    gina-users@gmdzi.gmd.de         GINA and CLM
  168.    lispworks@harlequin.co.uk       LispWorks
  169.    winterp@hplnpm.hpl.hp.com       WINTERP (OSF/Motif Widget INTERPreter)
  170.    yyonx@csrl.aoyama.ac.jp         YYonX
  171.  
  172. Lisp Object-Oriented Programming:
  173.  
  174.    CommonLoops@cis.ohio-state.edu  (same as comp.lang.clos@cis.ohio-state.edu)
  175.         PCL (Xerox PARC's portable implementation of CLOS).
  176.         Gatewayed to the comp.lang.clos newsgroup.
  177.         The mailing list is archived on nervous.cis.ohio-state.edu in
  178.         the directory pub/lispusers/commonloops.
  179.         The CLOS code repository is in pub/lispusers/clos.
  180.  
  181. Miscellaneous:
  182.  
  183.    stat-lisp-news-request@umnstat.stat.umn.edu
  184.            Use of Lisp and Lisp-based systems in statistics.
  185.    lisp-emacs-forum-request@ucbarpa.berkeley.edu
  186.            Franz Inc's GNU-Emacs/Lisp interface.
  187.  
  188. ----------------------------------------------------------------
  189. [4-8]   What are R4RS and IEEE P1178?
  190.  
  191. R4RS is the Revised^4 Report on the Algorithmic Language Scheme,
  192. edited by W. Clinger and J. Rees. It appeared in ACM Lisp Pointers IV,
  193. July-September 1991, and also as MIT AI Memo 848b. It serves as a kind
  194. of standard for the language. It can be obtained by anonymous ftp at
  195. the two Scheme Repositories, altdorf.ai.mit.edu and nexus.yorku.ca.
  196.  
  197. IEEE P1178 is IEEE Standard 1178-1990, "IEEE Standard for the Scheme
  198. Programming Language", published by IEEE in 1991. ISBN 1-55937-125-0.
  199. It is now also an ANSI standard. It may be ordered from IEEE by
  200. calling 1-800-678-IEEE and using order number SH14209.
  201. ----------------------------------------------------------------
  202. [4-9]   How do I do object-oriented programming in Scheme?
  203.  
  204. Some Scheme implementations (for example, MacScheme, Feel, Oaklisp,
  205. and PC-Scheme) include built-in object-oriented extensions.
  206.  
  207. MEROON is a package written in Scheme to provide the basic facilities
  208. of an object-oriented programming style through three macros:
  209. define-class, define-generic, and define-method. MEROON offers simple
  210. inheritance, reflective metaclasses and simple dispatching generic
  211. functions. MEROON also offers indexed fields subsuming Scheme vectors
  212. without inheritance restrictions. Meroon runs in Scheme->C, PC-Scheme,
  213. Chez Scheme, Elk, Gambit. MEROON sources and documentation may be
  214. found in the Scheme Repository as
  215.    nexus.yorku.ca:pub/scheme/new/meroon.*.tar.Z
  216. and also from
  217.    nuri.inria.fr:INRIA/icsla/meroon*.tar.Z.
  218.  
  219. For information on YASOS (Yet Another Scheme Object System), see
  220. "Scheming with Objects" in the October 1992 issue of AI Expert magazine.
  221.  
  222. ----------------------------------------------------------------
  223.  
  224. ;;; *EOF*
  225. Xref: bloom-picayune.mit.edu comp.lang.lisp:8753 comp.lang.clos:1593 news.answers:4563
  226. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!uunet!ogicse!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant
  227. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  228. Newsgroups: comp.lang.lisp,comp.lang.clos,news.answers
  229. Subject: FAQ: CLOS and PCL Questions 5/6 [Monthly posting]
  230. Summary: Questions about CLOS, PCL and object-oriented programming in Lisp
  231. Message-ID: <lisp-faq-5.text_724237355@cs.cmu.edu>
  232. Date: 13 Dec 92 09:03:06 GMT
  233. Article-I.D.: cs.lisp-faq-5.text_724237355
  234. Expires: Tue, 26 Jan 1993 09:02:35 GMT
  235. Sender: news@cs.cmu.edu (Usenet News System)
  236. Reply-To: lisp-faq@think.com
  237. Followup-To: poster
  238. Organization: School of Computer Science, Carnegie Mellon
  239. Lines: 237
  240. Approved: news-answers-request@MIT.Edu
  241. Supersedes: <lisp-faq-5.text_721645367@cs.cmu.edu>
  242. Nntp-Posting-Host: a.gp.cs.cmu.edu
  243.  
  244. Archive-name: lisp-faq/part5
  245. Last-Modified: Thu Nov  5 19:30:40 1992 by Mark Kantrowitz
  246. Version: 1.27
  247.  
  248. ;;; ****************************************************************
  249. ;;; Answers to Frequently Asked Questions about Lisp ***************
  250. ;;; ****************************************************************
  251. ;;; Written by Mark Kantrowitz and Barry Margolin
  252. ;;; lisp-faq-5.text -- 11959 bytes
  253.  
  254. This post contains Part 5 of the Lisp FAQ. It is cross-posted to the
  255. newsgroup comp.lang.clos because it contains material of interest to
  256. people concerned with CLOS, PCL and object-oriented programming in
  257. Lisp. The other parts of the Lisp FAQ are posted only to the
  258. newsgroups comp.lang.lisp and news.answers.
  259.  
  260. If you think of questions that are appropriate for this FAQ, or would
  261. like to improve an answer, please send email to us at lisp-faq@think.com.
  262.  
  263. CLOS/PCL Questions (Part 5):
  264.  
  265.   [5-0]   What is CLOS (PCL) and where can I get it?
  266.           How do you pronounce CLOS?
  267.   [5-1]   What documentation is available about object-oriented
  268.           programming in Lisp?
  269.   [5-2]   How I write a function that can access defstruct slots by
  270.           name?  I would like to write something like
  271.           (STRUCTURE-SLOT <object> '<slot-name>).
  272.   [5-3]   How can I list all the CLOS instances in a class?
  273.   [5-4]   How can I store data and CLOS instances (with possibly circular
  274.           references) on disk so that they may be retrieved at some later
  275.           time?
  276.   [5-5]   Given the name of a class, how can I get the names of its slots?
  277.  
  278. Search for [#] to get to question number # quickly.
  279.  
  280. In general, questions about object oriented programming in Lisp,
  281. especially questions about using CLOS or compiling PCL, should be
  282. directed to the newsgroup comp.lang.clos.
  283.  
  284. ----------------------------------------------------------------
  285. [5-0]  What is CLOS (PCL) and where can I get it?
  286.        How do you pronounce CLOS?
  287.  
  288. CLOS (Common Lisp Object System) is the object-oriented programming
  289. standard for Common Lisp. It is the successor to Symbolics FLAVORS and
  290. Xerox LOOPS (Lisp Object Oriented Programming System). The acronym
  291. CLOS is pronouned either as "See-Loss" or "Closs", depending on taste.
  292. PCL (Portable Common Loops) is a portable CLOS implementation, and is
  293. available by anonymous ftp from parcftp.xerox.com (13.1.64.94) in the
  294. /pub/pcl/ directory. Also in the same directory are sources for CLX R5
  295. and an inspecter.
  296.  
  297. The sources for the CLOS Metaobject Protocol specification are
  298. also available from parcftp as /pub/pcl/mop/spec.tar.Z. See also the book
  299. ``The Art of the Metaobject Protocol'' below. The Closette files
  300. related to this book are available from parcftp as /pub/pcl/mop/closette.lisp.
  301.  
  302. ----------------------------------------------------------------
  303. [5-1] What documentation is available about object-oriented
  304.       programming in Lisp?
  305.  
  306. Books about object-oriented programming in Lisp include:
  307.  
  308.    1. dpANS CL describes the entire Common Lisp language, which includes the
  309.       CLOS standard.  Informally, CLtL2 can also be used to learn about CLOS,
  310.       but please remember that CLtL2 is not an official X3J13 committee
  311.       document. (The presentation of CLtL2 differs from that of the draft
  312.       proposed standard, and some matters of fact have changed in the proposed
  313.       standard since the publication of CLtL2.)
  314.  
  315.    2. Sonya E. Keene
  316.       "Object-Oriented Programming in Common Lisp:
  317.        A Programmer's Guide to CLOS"
  318.       Addison-Wesley (Reading, MA), 1989. 266 pages. ISBN 0-201-17589-4.
  319.            Tutorial introduction to CLOS with many examples and
  320.            a lot of good advice for designing large programs using CLOS.
  321.  
  322.    3. Jo A. Lawless and Molly M. Miller.
  323.       "Understanding CLOS: the Common Lisp Object System"
  324.       Digital Press, 1991. 192 pages.
  325.  
  326.    4. Gregor Kiczales, Jim des Rivieres, and Daniel G. Bobrow.
  327.       "The Art of the Metaobject Protocol"
  328.       MIT Press, 1991. 335 pages. ISBN 0-262-61074-4
  329.            The first part of the book presents a model CLOS implementation,
  330.            introduces the basic principles of metaobject protocols, and
  331.            works through the key elements of the CLOS Metaobject Protocol.
  332.            The second half is the detailed specification of the CLOS
  333.            Metaobject Protocol. A simple working interpreter suitable
  334.            for experimentation is contained in an appendix.
  335.  
  336.    5. Robert R. Kessler and Amy R. Petajan.
  337.       "LISP, Objects, and Symbolic Programming"
  338.       Scott, Foresman and Company (Glenview, IL), 1988. 644 pages.
  339.            Includes a small Lisp compiler.
  340. ----------------------------------------------------------------
  341. [5-2] How can I write a function that can access defstruct slots by name?  I
  342.       would like to write something like
  343.         (STRUCTURE-SLOT <object> '<slot-name>).
  344.  
  345. There is currently no portable, built-in way to access structure slots
  346. given only the name.  If your Common Lisp includes an implementation
  347. of CLOS that supports the meta-object protocol specified in the
  348. original X3J13 draft spec (document X3J13/88-003), then it probably will
  349. allow (SLOT-VALUE <object> '<slot-name>); however, not all
  350. implementations of CLOS currently provide this.  Lacking this, some
  351. implementations may provide implementation-dependent functions that
  352. allow access to structure slots by name; note that this may cause
  353. saved images to be larger, as some implementations normally open-code
  354. structure accessors and discard slot name information.
  355.  
  356. While it is not possible to write a fully general STRUCTURE-SLOT function,
  357. it is not very difficult to write version that handles specific structure
  358. types.  For instance, after defining:
  359.  
  360.    (defstruct spaceship name captain position velocity)
  361.  
  362. one may then define:
  363.  
  364.    (defun spaceship-slot (spaceship slot-name)
  365.      (ecase slot-name
  366.        (name (spaceship-name spaceship))
  367.        (captain (spaceship-captain spaceship))
  368.        (position (spaceship-position spaceship))
  369.        (velocity (spaceship-velocity spaceship))))
  370.  
  371. or using CLOS (generic functions):
  372.  
  373. (defgeneric spaceship-slot (spaceship slot-name)
  374.   (:method ((x spaceship) (slot (eql :name)))
  375.     (spaceship-name x))
  376.   (:method ((x spaceship) (slot (eql :captain)))
  377.     (spaceship-captain x))
  378.   (:method ((x spaceship) (slot (eql :position)))
  379.     (spaceship-position x))
  380.   (:method ((x spaceship) (slot (eql :velocity)))
  381.     (spaceship-velocity x)))
  382.  
  383. Another popular way to define this is:
  384.  
  385.    (defun spaceship-slot (spaceship slot-name)
  386.      (funcall (symbol-function
  387.                 (find-symbol (format nil "SPACESHIP-~A" slot-name)
  388.                              #.(package-name *package*)))
  389.               spaceship))
  390.  
  391. I personally recommend the first version.  It is likely to be much faster
  392. and more memory efficient than the second version.  It's also easy to get
  393. the second one wrong; many people forget to specify the package argument to
  394. FIND-SYMBOL, which can cause incorrect results when the package at run time
  395. is different from the one at compile time.  Even my version assumes that
  396. SPACESHIP-SLOT is being defined in a file that is in the same package as
  397. the one containing the structure definition; if this isn't the case,
  398. #.(PACKAGE-NAME *PACKAGE*) should be replaced by a string naming the
  399. correct package.
  400.  
  401. Another workaround is to define a MY-DEFSTRUCT macro that parses the
  402. defstruct arguments and expands into a call to DEFSTRUCT along with a
  403. definition of the runtime slot-accessor function.
  404.  
  405. Some non-portable techniques include the use of LCL:STRUCTURE-REF
  406. in Lucid and EXCL:STRUCTURE-REF in Allegro.
  407. ----------------------------------------------------------------
  408. [5-3] How can I list all the CLOS instances in a class?
  409.  
  410. There is no built-in way to enumerate the instances of a class.  If you are
  411. only interested in listing the instances of classes that you have defined,
  412. it is not very difficult to implement it as part of your class definition.
  413. Add a shared slot, e.g. ALL-INSTANCES, with an initial value of NIL, to the
  414. class definition.  Then write an after-method on INITIALIZE-INSTANCE for
  415. this class, which pushes the instance being initialized onto ALL-INSTANCES.
  416. Note that this must be done separately for each class that wants to maintain
  417. such a list; it can't be encapsulated in a mixin class, because all its
  418. dependent classes would share the same ALL-INSTANCES slot.  A compromise
  419. would be to use a mixin to define the INITIALIZE-INSTANCE after-method (and
  420. any other general-purpose methods that use the slot), but not the shared
  421. slot; it would be up to the descendant classes to define the slot at the
  422. level of the class hierarchy that is appropriate. You could also try
  423. defining the classes that need instance-recording as instances of a
  424. metaclass that holds the instance registry on the class object. The
  425. recording behavior could then be built-in to an after method on
  426. initialize-instance for the root class of the metaclass, or even
  427. allocate-instance. To allow for garbage collection of old instances,
  428. you will also need to define a generic function to remove the recorded
  429. instances from the list of instances.
  430. ----------------------------------------------------------------
  431. [5-4]  How can I store data and CLOS instances (with possibly circular
  432.        references) on disk so that they may be retrieved at some later
  433.        time?
  434.  
  435. There are two main techniques of doing this kind of persistent object
  436. storage. The first involves using #. to compile the data into a file.
  437. The second produces an ASCII representation which, when evaluated,
  438. will reproduce an equivalent set of data.
  439.  
  440. If the data you wish to save is stored in the variable *hash-table*,
  441. create a file containing just the lines
  442.         (in-package "YOUR-PACKAGE")
  443.         (setq *hash-table* '#.*hash-table*)
  444. and compile it. The #. macro performs read-time evaluation of the
  445. expression following the dot, and so this compiles the data into the
  446. file. You may then load the file to restore the data. However, the
  447. resulting binary file is not portable between Lisp implementations,
  448. and sometimes not even for the same Lisp on different platforms. Also,
  449. some Lisps will treat the data as constant, and place it on pages in
  450. memory that are marked read-only (after it is loaded). If one tries to
  451. later modify the data, these Lisps will signal an error. Lucid CL only
  452. puts such constants in a read-only area when they appear inside
  453. functions, so this should be safe. Allegro CL doesn't seem to complain
  454. about modification if the data is a cons. DEC's VAXLisp, however, has
  455. problems with #. circular structures in .fas files.
  456.  
  457. The other technique is to produce an ASCII representation of the Lisp
  458. objects which may then be saved to a file. To reproduce the data, one
  459. can load (or compile and load) the file. This technique is portable
  460. between different Lisps and platforms. Unfortunately, the resulting
  461. data is not necessarily EQ to the original. Kerry Koitzsch's
  462. save-object.lisp package is included in the Lisp Utilities Repository,
  463. ftp.cs.cmu.edu:/afs/cs.cmu.edu/user/mkant/Public/Lisp-Utilities/.
  464. (Note: You must cd to this directory in one atomic operation, as some
  465. of the superior directories on the path are protected from access by
  466. an anonymous ftp.) The Lisp Utilities Repository is described in
  467. detail in the answer to question [6-1].
  468.  
  469. See also the discussion of MAKE-LOAD-FORM and MAKE-LOAD-FORM-SAVING-SLOTS
  470. in CLtL2.
  471.  
  472. ----------------------------------------------------------------
  473. [5-5]   Given the name of a class, how can I get the names of its slots?
  474.  
  475. (defun class-slot-names (class-name)
  476.   (mapcar #'clos:slot-definition-name
  477.           (clos:class-slots (find-class class-name))))
  478.  
  479. ----------------------------------------------------------------
  480. ;;; *EOF*
  481. Xref: bloom-picayune.mit.edu comp.lang.lisp:8754 comp.lang.scheme:5784 news.answers:4564
  482. Path: bloom-picayune.mit.edu!enterpoop.mit.edu!spool.mu.edu!uunet!ogicse!das-news.harvard.edu!cantaloupe.srv.cs.cmu.edu!crabapple.srv.cs.cmu.edu!mkant
  483. From: mkant+@cs.cmu.edu (Mark Kantrowitz)
  484. Newsgroups: comp.lang.lisp,comp.lang.scheme,news.answers
  485. Subject: FAQ: Lisp FTP Resources 6/6 [Monthly posting]
  486. Summary: FTP Resources and Free Lisp/Scheme Software
  487. Message-ID: <lisp-faq-6.text_724237414@cs.cmu.edu>
  488. Date: 13 Dec 92 09:03:54 GMT
  489. Article-I.D.: cs.lisp-faq-6.text_724237414
  490. Expires: Tue, 26 Jan 1993 09:03:34 GMT
  491. Sender: news@cs.cmu.edu (Usenet News System)
  492. Reply-To: lisp-faq@think.com
  493. Followup-To: poster
  494. Organization: School of Computer Science, Carnegie Mellon
  495. Lines: 907
  496. Approved: news-answers-request@MIT.Edu
  497. Supersedes: <lisp-faq-6.text_721645376@cs.cmu.edu>
  498. Nntp-Posting-Host: a.gp.cs.cmu.edu
  499.  
  500. Archive-name: lisp-faq/part6
  501. Last-Modified: Thu Nov  5 19:30:40 1992 by Mark Kantrowitz
  502. Version: 1.27
  503.  
  504. ;;; ****************************************************************
  505. ;;; FTP Archives and Other Resources *******************************
  506. ;;; ****************************************************************
  507. ;;; Written by Mark Kantrowitz and Barry Margolin
  508. ;;; lisp-faq-6.text -- 47389 bytes
  509.  
  510. This post contains Part 6 of the Lisp FAQ.
  511.  
  512. If you think of questions that are appropriate for this FAQ, or would
  513. like to improve an answer, please send email to us at lisp-faq@think.com.
  514.  
  515. Topics Covered (Part 6):
  516.   [6-0] General information about FTP Resources for Lisp and Scheme
  517.   [6-1] Repositories of Lisp Software
  518.   [6-2] Repositories of Scheme Software
  519.   [6-3] Publicly Redistributable Lisp Software
  520.   [6-4] Publicly Redistributable Scheme Software
  521.   [6-5] How can I use the X Window System or other GUIs from Lisp?
  522.   [6-6] Formatting code in LaTeX
  523.  
  524. Search for [#] to get to question number # quickly.
  525.  
  526. ----------------------------------------------------------------
  527. [6-0] General information about FTP Resources for Lisp and Scheme
  528.  
  529. Remember, when ftping compressed or compacted files (.Z, .arc, .fit,
  530. etc.) to use binary mode for retrieving the files.
  531.  
  532. FTP sites for Lisp/Scheme interpreters and compilers are discussed in
  533. the answer to questions [4-0] and [4-2]. See the entry on Macintosh
  534. Common Lisp in question [4-1] for information on the CD-ROM of Lisp code that
  535. Apple distributes with MCL 2.0.
  536.  
  537. ----------------------------------------------------------------
  538. [6-1] Repositories of Lisp Software
  539.  
  540. There are several repositories of publicly redistributable and
  541. public domain Lisp code.
  542.  
  543.    The Lisp Utilities collection is accessible by anonymous ftp
  544.    to any CMU CS machine (e.g., ftp.cs.cmu.edu [128.2.206.173])
  545.    or through AFS in the directory
  546.            /afs/cs.cmu.edu/user/mkant/Public/Lisp-Utilities/
  547.    If accessing this directory through anonymous ftp, it is
  548.    important to "cd" to the directory using one atomic operation, as
  549.    some of the superior directories on the path are protected from
  550.    access by an anonymous ftp.
  551.    Files included in the repository include:
  552.       extensions.lisp         A collection of extensions to Common Lisp.
  553.       initializations.lisp    Brad Miller's initializations packaged
  554.                               for Allegro CL 4.0.
  555.       xref.lisp               Portable cross referencing tool for Lisp.
  556.                               Similar to the Symbolics Who-Calls and
  557.                               the Xerox MasterScope programs.
  558.       defsystem.lisp          Portable system definition facility (a
  559.                               "Make" for lisp). More featureful than
  560.                               other defsystem implementations.
  561.       logical-pathnames.lisp  Portable implementation of the X3J13
  562.                               June 1989 specification for logical pathnames.
  563.       metering.lisp           Portable code time/space profiling tool.
  564.       source-compare.lisp     A portable "diff" utility for Lisp.
  565.       user-manual.lisp        Program which helps with documenting Lisp code.
  566.       psgraph.lisp            Joe Bates' PostScript DAG grapher.
  567.       matcher.lisp            A regexp-like matcher for Lisp.
  568.       framework.lisp          A portable generic frame system.
  569.       date-formatter.lisp     Simple code for formatting a date.
  570.       save-object.lisp        Kerry Koitzsch's package to save ASCII
  571.                               representations of Lisp objects to a file.
  572.       defpackage.lisp         Stephen Nicoud's semi-portable
  573.                               CLtL2 version of defpackage.
  574.       johnson-yacc.lisp       Mark Johnson's lisp YACC.
  575.       ops5.tar.Z              Public domain Common Lisp implementation
  576.                               of the OPS5 production system interpreter.
  577.                               "Expert System Shell".
  578.                               Written by Charles Forgy and ported by
  579.                               George Wood and Jim Kowalski.
  580.       cmu-loop.lisp           Implements the CLtL2 Loop Macro.
  581.       mit-loop.lisp           Implements the CLtL1 Loop Macro.
  582.       sloop.lisp              William Schelter's loop macro, not CLtL1/2.
  583.       yloop.lisp              Frank Ritter and Jim Panagos' implementation
  584.                               of the Yale loop macro described in
  585.                               McDermont, Charniak and Riesbeck's
  586.                               AI programming book. Not CLtL1/2.
  587.       ew/                     Express Windows distribution.
  588.       iterate/                The Iterate Macro.
  589.       series/                 Waters' Series Macro package.
  590.       simplex.lisp            Bruno Haible's implementation of the Simplex
  591.                               algorithm.
  592.       mapforms.tar.Z          Moon's code walker.
  593.       resources.lisp          Brad Miller's resources package.
  594.       nregex.lisp             Lawrence Freil's regular expression matching code
  595.    The Lisp Utilities repository is maintained by Mark Kantrowitz,
  596.    cl-utilities-request@cs.cmu.edu.
  597.